package com.dyy.AI_System.service;

import com.dyy.AI_System.domain.po.Documents;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;
import java.util.List;

/**
 * <p>
 * 文档表 服务类
 * </p>
 *
 * @author dyy
 * @since 2025-10-14
 */
public interface IDocumentsService extends IService<Documents> {
    
    /**
     * 上传文档
     * @param file 上传的文件
     * @param departmentId 部门ID
     * @param categoryId 分类ID
     * @param description 文档描述
     * @param accessLevel 访问级别
     * @param tags 标签列表
     * @param uploaderId 上传者ID
     * @return 包含文档ID、标题和状态的Map
     */
    Map<String, Object> uploadDocument(MultipartFile file, Long departmentId, Long categoryId, 
                                     String description, String accessLevel, List<String> tags, Long uploaderId);
    
    /**
     * 分页查询文档列表
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @param departmentId 部门ID（可选）
     * @param categoryId 分类ID（可选）
     * @param status 状态（可选）
     * @return 文档分页列表
     */
    IPage<Documents> pageQuery(Integer pageNum, Integer pageSize, Long departmentId, 
                              Long categoryId, String status);
    
    /**
     * 根据ID获取文档详情
     * @param id 文档ID
     * @return 文档详情（包含关联信息）
     */
    Map<String, Object> getDocumentDetail(Long id);
    
    /**
     * 删除文档
     * @param id 文档ID
     * @return 是否删除成功
     */
    boolean deleteDocument(Long id);
    
    /**
     * 更新文档信息
     * @param id 文档ID
     * @param title 文档标题
     * @param description 文档描述
     * @param categoryId 分类ID
     * @param accessLevel 访问级别
     * @param tags 标签列表
     * @return 是否更新成功
     */
    boolean updateDocumentInfo(Long id, String title, String description, Long categoryId, 
                             String accessLevel, List<String> tags);
}
